//package com.zhw;
//
//import com.mongodb.client.MongoCursor;
//import org.apache.jmeter.config.Arguments;
//import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
//import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
//import org.apache.jmeter.samplers.SampleResult;
//import org.bson.Document;
//
///**
// * @author weizhang52
// * @description: TestMongodbSamplerClient类是必须通过继承AbstractJavaSamplerClient抽象类后，重写方法去实现的。
// * 而setupTest、runTest、teardownTest方法是完成整个测试声明周期，
// * 其中setupTest与teardownTest在整个线程执行中只执行一次用于初始化和结束
// * @date 2019/7/1
// * @modify
// */
//public class TestMongodbSamplerClient0 extends AbstractJavaSamplerClient {
//
//    public static String host = null;
//    public static int port = 0;
//    public String collection = "";
//    public MongodbClient mongodbClient = null;
//    public MongoCursor<Document> mongoCursor = null;
//    /* 获取页面填写的参数 */
//
//
//    @Override
//    public Arguments getDefaultParameters() {
//        //添加参数：实现jemeter界面(javaRequest)输入参数的设置
//        Arguments arguments = new Arguments();
//        arguments.addArgument("interfaceName","");
//        arguments.addArgument("methodName","");
//        return arguments;
//    }
//
//
//    /**
//     * public void setupTest(JavaSamplerContextcontext)，启动整个线程过程中，该方法只执行一次，在该方法中，
//     * 我们可以做一些初始化事件的准备或者获取在JAVA Request中设置的参数的值
//     *
//     * @param context
//     */
//    @Override
//    public void setupTest(JavaSamplerContext context) {
//
////         host = context.getParameter("host");
////     port = context.getIntParameter("port");
////     collection = context.getParameter("collection");
//        //某种连接只连接一次，例如数据库
//        System.out.print("setupTest测试开始");
//
//    }
//
//    @Override
//    public SampleResult runTest(JavaSamplerContext arg0) {
//
////        以下是runTest的代码模版
//        // TODO Auto-generated method stub
//        System.out.println("[runTest] 进入方法");
//        // 必须要new一个SampleResult的实例对象，有该对象可以设定View Result tree的响应数据，最后需要返回对象
//        SampleResult result = new SampleResult();
//        // 该方法设定View Result Tree中显示的请求名称和Aggregate Report中的Label名称
//        result.setSampleLabel("MongodbSampler" + Thread.currentThread().getId());
//        // 该方法设置执行的开始时间
//        result.sampleStart();
//        mongodbClient = new MongodbClient();
//        // 连接mongoDb数据库
//        mongodbClient.ConnectionMongoClient("127.0.0.1", 27017, "analysis10");
//
//
//        mongoCursor = mongodbClient.query("t_log", "");
//        while (mongoCursor.hasNext()) {
//            collection = collection + mongoCursor.next().toString() + "\n";
//            System.out.println("collection" + collection);
//        }
//        if (collection != "" || !collection.equals("")) {
//            // 该方法设定响应的数据，在View Result Tree中可看到响应的数据
//            result.setResponseData(collection.getBytes());
//        } else {
//            result.setResponseData(("the return data is null !").getBytes());
//        }
//
//        mongodbClient.closeConnection();
//        // 该方法设定执行是否成功
//        result.setSuccessful(true);
//        // 该方法设置执行结束时间
//        result.sampleEnd();
//        return result;
//
//        /**
//         * 当然result对象中原因不止目前介绍的几个操作方法，还有很多的操作，
//         * 如果还需要其他的设置或者了解更多信息，可以对查看SampleResult类的源代码
//         */
//
//    }
//
//    @Override
//    public void teardownTest(JavaSamplerContext context) {
//        System.out.print("teardownTest测试结束");
//    }
//
//    /**
//     *
//     * 1、导出jar包
//     * 2、拷贝导出的jar文件到JMeter的lib/ext目录下：将TestMongodbSampler.jar拷贝到JMeter的lib/ext目录下后，必须要重新启动JMeter工具才生效。
//     * 3、执行TestMongodbSampler插件
//     * 4、启动JMeter后分别创建线程组，Java Request组件，查看结果树以及聚合报告。
//     * 5、创建Java Request组件请求，并且选中test.mongodb.sampler.TestMongodbSamplerClient，由于没有编写获取参数的代码，
//     * 所以在Send Parameters With the Request中不用设置参数。
//     * 6、运行成功后，查看View Result Tree中的响应数据
//     * 7、以上就是整个编写Sampler组件到运行的整个过程，每一个步骤都是经过实践的。
//     *
//     */
//    public static void main(String[] args) {
//
//        TestMongodbSamplerClient0 jmeterTest = new TestMongodbSamplerClient0();
//        // 需要复写getDefaultParameters()方法
//        JavaSamplerContext arg0 = new JavaSamplerContext(jmeterTest.getDefaultParameters());
//        jmeterTest.runTest(arg0);
//        jmeterTest.teardownTest(arg0);
//
//    }
//
//    public static Document createUserDoc(String statisticsDate){
//
//        Document document = new Document("statisticsDate",statisticsDate)
//                .append("hZero",1000).append("hOne",1000).append("hTwo",1000).append("hThree",1000)
//                .append("hFour",1000).append("hFive",10000).append("hSix",1000).append("hSeven",1000)
//                .append("hEight",1000).append("hNine",1000).append("hTen",1000).append("hEleven",1000)
//                .append("hTwelve",1000).append("hThirteen",1000).append("hFourteen",1000).append("hFifteen",1000)
//                .append("hSixteen",1000).append("hSeventeen",1000).append("hEighteen",1000).append("hNineteen",1000)
//                .append("hTwenty",1000).append("hTwentyOne",1000).append("hTwentyTwo",1000).append("hTwentyThree",1000);
//
//        return document;
//
//    }
//
//    public static Document createTimeDoc(String statisticsDate){
//
//        Document document = new Document("statisticsDate",statisticsDate).append("activeCount",10000).append("activationCount",24000);
//
//        return document;
//
//    }
//
//}
